<?php
/**
 * * * * * * * * * * LICENCIA * * * * * * * * * * * * * * * * * * * * *

Copyright(C) 2012
Instituto Universtiario de Tecnología Dr. Federico Rivero Palacio

Este programa es Software Libre y usted puede redistribuirlo y/o modificarlo
bajo los términos de la versión 3.0 de la Licencia Pública General (GPLv3)
publicada por la Free Software Foundation (FSF), es distribuido sin ninguna
garantía. Usted debe haber recibido una copia de la GPLv3 junto con este
programa, sino, puede encontrarlo en la página web de la FSF, 
específicamente en la dirección http://www.gnu.org/licenses/gpl-3.0.html

 * * * * * * * * * * ARCHIVO * * * * * * * * * * * * * * * * * * * * *

Nombre: Sesion.clase.php
Diseñador: Johan Alamo
Programador: GeraldineCastillo 
Fecha: enero 2014
Descripción:  
	Esta clase permite encapsular y simplificar el manejo de los datos de
	las sesiones en PHP. En el sistema se manejan cuatro datos básicos por 
	la sesión que son:  nombre, apellido, tipo y  código del usuario. La 
	clase permite manejar estos datos como si se tratara de un objeto, y 
	además encapsula las instrucciones para iniciar y cerrar sesión. Los 
	atributos de esta clase son posiciones en el arreglo $_SESSION.
	
	Contiene además dos métodos como lo es: esDocente() y esEstudiante() que
    permite verificar que tipo de usuario es el que se está logueando.

 * * * * * * * * Cambios/Mejoras/Correcciones/Revisiones * * * * * * * *
Diseñador - Programador /   Fecha   / Descripción del cambio
---                         ----      ---------

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/



class Sesion{
	
	/* Método público que crea una sesión o reanuda la actual es llamada
	 * cuando se inicia una sesión. Internamente hace un llamado a la función
	 * session_start() de php.
	 * */	
	
	public static function iniciarSesion(){
		session_start();	
	}
	
	/* Método público que permite destruir una sesión ya iniciada y
	 * destruye el arreglo de $_SESSION.
	 * */
	 
	public static function cerrarSesion(){
		self::iniciarSesion();
		unset($_SESSION);
		session_destroy();
			
	}
	
	/* Método público que verifica si el código de un usuario existe
	 * en el arreglo de la variable $_SESSION. 
	 * 
	 * Valor de retorno:
		En  caso exitoso true  , false en caso de error.
	 * */
	 
	public static function hayUsuarioLogueado(){
		return isset ($_SESSION['codigo']);
	}
	
	/* Método público que permite asignarle al arreglo $_SESSION el tipo de
	 * usuario.
	   Parámetros de entrada:
			$tipoUsuario: tipo: cadena.
			Tipo de usuario ejemplo : docente ó estudiante .
	   Excepciones que lanza: 
			Exception: si el tipo de usuario es distinto de “d” docente  “e” estudiante.
	 * */
	
	public static function asignarTipoUsuario($tipoUsuario){
		if (($tipoUsuario!='d' ) && ($tipoUsuario!='D' ) && ($tipoUsuario!='e' ) && ($tipoUsuario!='E' ))
			throw new Exception ("tipo de usuario inválido debe ser d ó D para docente y e ó E para estudiante") ;
		$_SESSION['tipoU']=$tipoUsuario;
	}
	
	/* Método público que permite obtener el tipo de usuario del arreglo $_SESSION. 
	   Valor de retorno:
			tipoUsuario: tipo: cadena, en caso de ser true.
			False:  en caso que el usuario no este logueado.
	* */
	
	public static function obtenerTipoUsuario(){
		$result=Sesion::hayUsuarioLogueado();
		if ($result)
			return $_SESSION['tipoU'];
		else 
			return $result;
	}
	
	/* Método público que permite asignarle al arreglo $_SESSION el código del usuario.
       Parámetros de entrada:
		  $codigo: tipo: cadena.
		  Código del usuario.
	   Excepciones que lanza: 
		  Exception: si el código esta vacío.
	 * */
	
	public static function asignarCodigo($codigo){
		if (($codigo==null) || ($codigo ==""))
			throw new Exception ("el código no puede estar vacio");
		$_SESSION['codigo']=$codigo;
	}
	
	/* Método público que permite obtener el código del usuario del arreglo $_SESSION.  
	   Valor de retorno:
			codigo: tipo: cadena
			En caso de ser true.
			False: en caso que el usuario no este logueado.
	 * */
	 
	public static function obtenerCodigo(){
		$result=Sesion::hayUsuarioLogueado();
		if ($result)
			return $_SESSION['codigo'];
		else 
			return $result;
	}
	
	/* Método público que permite asignarle al arreglo $_SESSION el apellido del usuario.  
	   Parámetros de entrada:
			$apellido: tipo: cadena.
			Apellido del usuario.
		Excepciones que lanza: 
			Exception: si el apellido esta vacío.

	 * */
	 
	public static function asignarApellido($apellido){
		if (($apellido==null) || ($apellido ==""))
			throw new Exception ("el apellido no puede estar vacio");
		$_SESSION['apellido']=$apellido;
	}
	
	/* Método público que permite obtener el apellido del usuario del arreglo $_SESSION.  
	   Valor de retorno:
			apellido: tipo: cadena
			En caso de ser true.
			False:  en caso que el usuario no este logueado.
	 * */
	
	public static function obtenerApellido(){
		$result=Sesion::hayUsuarioLogueado();
		if ($result)
			return $_SESSION['apellido'];
		else 
			return $result;
	}
	
	/* Método público que permite asignarle al arreglo $_SESSION el nombre del usuario.  
		Parámetros de entrada:
			$nombre: tipo: cadena.
			Nombre del usuario.
		Excepciones que lanza: 
			Exception: si el nombre esta vacío.
	 * */
	
	public static function asignarNombre($nombre){
		if (($nombre==null) || ($nombre==""))
			throw new Exception ("el nombre no puede estar vacio");
		$_SESSION['nombre']=$nombre;
	}
	
	/* Método público que permite obtener el nombre del usuario del arreglo $_SESSION.  
		Valor de retorno:
			nombre: tipo: cadena
			En caso de ser true.
			False:  en caso que el usuario no este logueado.
	 * */
	
	public static function obtenerNombre(){
		$result=Sesion::hayUsuarioLogueado();
		if ($result)
			return $_SESSION['nombre'];
		else 
			return $result;
	}
	
	/* Método público que permite verificar si el tipo de usuario es un docente.
		Valor de retorno:
			True: cuando sea un docente.
			False: cuando no sea un docente ó el usuario no este logueado.
	 * */
	
	public static function esDocente(){
		$result=Sesion::hayUsuarioLogueado();
		if ($result){
			if (($_SESSION['tipoU']== 'd') || ($_SESSION['tipoU']== 'D'))
				return true;
		}
		return false ;
	}
	
	/* Método público que permite verificar si el tipo de usuario es un estudiante.
		Valor de retorno:
			True: cuando sea un estudiante.
			False: cuando no sea un estudiante ó el usuario no este logueado.
	 * */
	 
	public static function esEstudiante(){
		$result=Sesion::hayUsuarioLogueado();
		if ($result){
			if (($_SESSION['tipoU']== 'e') || ($_SESSION['tipoU']== 'E'))
				return true;
		}
		return false ;
	}
	 	 


}
?>
